package com.heima.common.exception;


import com.heima.model.common.dto.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @RestControllerAdvice = @ResponseBody + @ControllerAdvice
 * 统一异常处理类
 * @author 黑马程序员
 * @Company http://www.ithiema.com
 * @Version 1.0
 */
@RestControllerAdvice
@Slf4j
public class BasicExceptionHandler {

    /**
     * 可以预料 的异常（自定义异常）
     * @param e LeadNewsException
     * @return ResponseResult
     */
    @ExceptionHandler({ //此注解中，可以指定 该方法要处理的异常类型
            LeadNewsException.class
    })
    public ResponseResult handlerNcException(LeadNewsException e){
        e.printStackTrace();
        return ResponseResult.errorResult(e.getCode(),e.getMessage());
    }

    /**
     * 没有预料 的异常(其他异常(Exception))
     * @param e exception
     * @return ResponseResult
     */
    @ExceptionHandler({
            Exception.class
    })
    public ResponseResult handlerOtherException(Exception e){
        e.printStackTrace();
        return ResponseResult.errorResult(
                AppHttpCodeEnum.SERVER_ERROR.getCode(), AppHttpCodeEnum.SERVER_ERROR.getErrorMessage());
    }

}
